/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.celiosilva.simbanc.controller.cliente;

import com.celiosilva.simbanc.beans.Cliente;
import com.celiosilva.simbanc.beans.ClienteFisico;
import com.celiosilva.simbanc.beans.ClienteJuridico;
import com.celiosilva.simbanc.business.ClienteBusiness;
import com.celiosilva.simbanc.business.seguranca.Permissao;
import com.celiosilva.simbanc.business.util.Sucesso;
import com.celiosilva.simbanc.exceptions.AcessoNegadoException;
import com.celiosilva.simbanc.exceptions.SimbancException;

/**
 *
 * @author celio@celiosilva.com
 */
public class AlterarClienteController extends VisualizarClienteController{

    public AlterarClienteController(Integer codCliente) throws AcessoNegadoException {
        super(codCliente);
    }

    public AlterarClienteController()  throws AcessoNegadoException {}

    @Override
    protected String getTitulo() {
        return "Alterar Cliente";
    }

    @Override
    protected void salvarCliente() {
        try {
            Cliente c = (clienteVisualizado instanceof ClienteFisico)? new ClienteFisico(): new ClienteJuridico();
            Cliente cliente = this.preencherBeanCliente(c);
            Sucesso s = ClienteBusiness.getInstance().alterarCliente(cliente);
            this.mostrarAviso(s);
            this.limparTela();
        } catch (SimbancException ex) {
            this.mostrarAviso(ex);
        }
    }

    @Override
    protected Cliente preencherBeanCliente(Cliente cliente) {
        if (cliente instanceof ClienteFisico){
            ((ClienteFisico)cliente).setCpf(this.txtIdentificador.getText());
        } else if (cliente instanceof ClienteJuridico){
            ((ClienteJuridico)cliente).setCnpj(this.txtIdentificador.getText());
        }
        return super.preencherBeanCliente(cliente);
    }

    @Override
    public Permissao getPermissaoAtribuida() {
        return Permissao.ALTERAR_CLIENTE;
    }

}
